package http_servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * Creared with IntelliJ IDEA.
 * Description:Servlet的生命周期体现在执行Tomcat的整个流程中,开始的时候Tomcat会加载所有的Servlet类到一个集合中,然后执行Servlet的init方法,
 * 这个方法主要就是负责初始化Servlet对象(用户可以重写这个方法来写一些和初始化相关的逻辑,在源码中其实啥都没干),此时Servlet也就开始了其的生命,
 * 然后所有的类实例加载完成了,就会建立TCP socket,监听端口8080,每当有客户端发来请求就会在线程池当中添加一个任务,而这个任务就会处理这个请求,看其是否是静态文件,
 * 如果是静态文件就直接将其写回到响应的body中,如果不是静态文件,就会先看其两级路径都是否正确,
 * 如果正确就会执行service方法,看方法是否匹配,代码是否有异常,所有的都执行完成了以后,按照正常情况退出就会调用destroy方法,用来释放资源,此时Servlet的生命周期也就结束了,
 * 这三个方法中init和destroy都只会执行一次,而service可能会执行很多次,这三个方法也就描述了Servlet的整个生命周期,从开始到结束!!!
 * User:yxd
 * Date:2022-05-29
 * Time:16:42
 */
//此处必须加/,这是要求,这个斜杠和相对绝对路径不是一个东西,这是硬性要求
@WebServlet("/method")
public class MyHttpServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //这里是POST请求,而想要构造POST请求就需要使用form表单或是ajax,这里就使用ajax构造POST请求
        //另外这里是post请求通过url的形式直接访问是会405的,只有get方法才可以直接通过url的形式
        resp.setContentType("text/html;charset=utf8");//这样就可以指定数据的格式和编码了
        resp.getWriter().write("POST 响应");
        //而这里预期打印的是"POST 响应",但打印出来的是"POST ??"乱码了
        //而这里处理字符串有两个环节:1,写入字符串,2.展示字符串(在浏览器中把这个字符串展示到控制台中)而这两个环节如果不能按照统一的字符编码进行.就会出现乱码
        //idea里面的一般都是utf-8,而浏览器展示会跟随系统的字符编码是GBK编码,因此就需要显式的高速浏览器使用utf-8的方式来写入
    }
}
